# coding: utf-8

"""
Copyright 2015 SmartBear Software

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.

    Ref: https://github.com/swagger-api/swagger-codegen
"""

from __future__ import absolute_import, unicode_literals

from pprint import pformat

from six import iteritems


class Episode(object):
    """
    NOTE: This class is auto generated by the swagger code generator program.
    Do not edit the class manually.
    """
    def __init__(self):
        """
        Episode - a model defined in Swagger

        :param dict swaggerTypes: The key is attribute name
                                  and the value is attribute type.
        :param dict attributeMap: The key is attribute name
                                  and the value is json key in definition.
        """
        self.swagger_types = {
            'id': 'int',
            'aired_season': 'int',
            'aired_episode_number': 'int',
            'episode_name': 'text_type',
            'first_aired': 'text_type',
            'guest_stars': 'text_type',
            'director': 'text_type',
            'writers': 'list[text_type]',
            'overview': 'text_type',
            'production_code': 'text_type',
            'show_url': 'text_type',
            'last_updated': 'int',
            'dvd_discid': 'text_type',
            'dvd_season': 'int',
            'dvd_episode_number': 'float',
            'dvd_chapter': 'float',
            'absolute_number': 'int',
            'filename': 'text_type',
            'series_id': 'text_type',
            'last_updated_by': 'text_type',
            'airs_after_season': 'int',
            'airs_before_season': 'int',
            'airs_before_episode': 'int',
            'thumb_author': 'text_type',
            'thumb_added': 'text_type',
            'thumb_width': 'text_type',
            'thumb_height': 'text_type',
            'imdb_id': 'text_type',
            'site_rating': 'float'
        }

        self.attribute_map = {
            'id': 'id',
            'aired_season': 'airedSeason',
            'aired_episode_number': 'airedEpisodeNumber',
            'episode_name': 'episodeName',
            'first_aired': 'firstAired',
            'guest_stars': 'guestStars',
            'director': 'director',
            'writers': 'writers',
            'overview': 'overview',
            'production_code': 'productionCode',
            'show_url': 'showUrl',
            'last_updated': 'lastUpdated',
            'dvd_discid': 'dvdDiscid',
            'dvd_season': 'dvdSeason',
            'dvd_episode_number': 'dvdEpisodeNumber',
            'dvd_chapter': 'dvdChapter',
            'absolute_number': 'absoluteNumber',
            'filename': 'filename',
            'series_id': 'seriesId',
            'last_updated_by': 'lastUpdatedBy',
            'airs_after_season': 'airsAfterSeason',
            'airs_before_season': 'airsBeforeSeason',
            'airs_before_episode': 'airsBeforeEpisode',
            'thumb_author': 'thumbAuthor',
            'thumb_added': 'thumbAdded',
            'thumb_width': 'thumbWidth',
            'thumb_height': 'thumbHeight',
            'imdb_id': 'imdbId',
            'site_rating': 'siteRating'
        }

        self._id = None
        self._aired_season = None
        self._aired_episode_number = None
        self._episode_name = None
        self._first_aired = None
        self._guest_stars = None
        self._director = None
        self._writers = None
        self._overview = None
        self._production_code = None
        self._show_url = None
        self._last_updated = None
        self._dvd_discid = None
        self._dvd_season = None
        self._dvd_episode_number = None
        self._dvd_chapter = None
        self._absolute_number = None
        self._filename = None
        self._series_id = None
        self._last_updated_by = None
        self._airs_after_season = None
        self._airs_before_season = None
        self._airs_before_episode = None
        self._thumb_author = None
        self._thumb_added = None
        self._thumb_width = None
        self._thumb_height = None
        self._imdb_id = None
        self._site_rating = None

    @property
    def id(self):
        """
        Gets the id of this Episode.


        :return: The id of this Episode.
        :rtype: int
        """
        return self._id

    @id.setter
    def id(self, id):
        """
        Sets the id of this Episode.


        :param id: The id of this Episode.
        :type: int
        """
        self._id = id

    @property
    def aired_season(self):
        """
        Gets the aired_season of this Episode.


        :return: The aired_season of this Episode.
        :rtype: int
        """
        return self._aired_season

    @aired_season.setter
    def aired_season(self, aired_season):
        """
        Sets the aired_season of this Episode.


        :param aired_season: The aired_season of this Episode.
        :type: int
        """
        self._aired_season = aired_season

    @property
    def aired_episode_number(self):
        """
        Gets the aired_episode_number of this Episode.


        :return: The aired_episode_number of this Episode.
        :rtype: int
        """
        return self._aired_episode_number

    @aired_episode_number.setter
    def aired_episode_number(self, aired_episode_number):
        """
        Sets the aired_episode_number of this Episode.


        :param aired_episode_number: The aired_episode_number of this Episode.
        :type: int
        """
        self._aired_episode_number = aired_episode_number

    @property
    def episode_name(self):
        """
        Gets the episode_name of this Episode.


        :return: The episode_name of this Episode.
        :rtype: text_type
        """
        return self._episode_name

    @episode_name.setter
    def episode_name(self, episode_name):
        """
        Sets the episode_name of this Episode.


        :param episode_name: The episode_name of this Episode.
        :type: text_type
        """
        self._episode_name = episode_name

    @property
    def first_aired(self):
        """
        Gets the first_aired of this Episode.


        :return: The first_aired of this Episode.
        :rtype: text_type
        """
        return self._first_aired

    @first_aired.setter
    def first_aired(self, first_aired):
        """
        Sets the first_aired of this Episode.


        :param first_aired: The first_aired of this Episode.
        :type: text_type
        """
        self._first_aired = first_aired

    @property
    def guest_stars(self):
        """
        Gets the guest_stars of this Episode.


        :return: The guest_stars of this Episode.
        :rtype: text_type
        """
        return self._guest_stars

    @guest_stars.setter
    def guest_stars(self, guest_stars):
        """
        Sets the guest_stars of this Episode.


        :param guest_stars: The guest_stars of this Episode.
        :type: text_type
        """
        self._guest_stars = guest_stars

    @property
    def director(self):
        """
        Gets the director of this Episode.


        :return: The director of this Episode.
        :rtype: text_type
        """
        return self._director

    @director.setter
    def director(self, director):
        """
        Sets the director of this Episode.


        :param director: The director of this Episode.
        :type: text_type
        """
        self._director = director

    @property
    def writers(self):
        """
        Gets the writers of this Episode.


        :return: The writers of this Episode.
        :rtype: list[text_type]
        """
        return self._writers

    @writers.setter
    def writers(self, writers):
        """
        Sets the writers of this Episode.


        :param writers: The writers of this Episode.
        :type: list[text_type]
        """
        self._writers = writers

    @property
    def overview(self):
        """
        Gets the overview of this Episode.


        :return: The overview of this Episode.
        :rtype: text_type
        """
        return self._overview

    @overview.setter
    def overview(self, overview):
        """
        Sets the overview of this Episode.


        :param overview: The overview of this Episode.
        :type: text_type
        """
        self._overview = overview

    @property
    def production_code(self):
        """
        Gets the production_code of this Episode.


        :return: The production_code of this Episode.
        :rtype: text_type
        """
        return self._production_code

    @production_code.setter
    def production_code(self, production_code):
        """
        Sets the production_code of this Episode.


        :param production_code: The production_code of this Episode.
        :type: text_type
        """
        self._production_code = production_code

    @property
    def show_url(self):
        """
        Gets the show_url of this Episode.


        :return: The show_url of this Episode.
        :rtype: text_type
        """
        return self._show_url

    @show_url.setter
    def show_url(self, show_url):
        """
        Sets the show_url of this Episode.


        :param show_url: The show_url of this Episode.
        :type: text_type
        """
        self._show_url = show_url

    @property
    def last_updated(self):
        """
        Gets the last_updated of this Episode.


        :return: The last_updated of this Episode.
        :rtype: int
        """
        return self._last_updated

    @last_updated.setter
    def last_updated(self, last_updated):
        """
        Sets the last_updated of this Episode.


        :param last_updated: The last_updated of this Episode.
        :type: int
        """
        self._last_updated = last_updated

    @property
    def dvd_discid(self):
        """
        Gets the dvd_discid of this Episode.


        :return: The dvd_discid of this Episode.
        :rtype: text_type
        """
        return self._dvd_discid

    @dvd_discid.setter
    def dvd_discid(self, dvd_discid):
        """
        Sets the dvd_discid of this Episode.


        :param dvd_discid: The dvd_discid of this Episode.
        :type: text_type
        """
        self._dvd_discid = dvd_discid

    @property
    def dvd_season(self):
        """
        Gets the dvd_season of this Episode.


        :return: The dvd_season of this Episode.
        :rtype: int
        """
        return self._dvd_season

    @dvd_season.setter
    def dvd_season(self, dvd_season):
        """
        Sets the dvd_season of this Episode.


        :param dvd_season: The dvd_season of this Episode.
        :type: int
        """
        self._dvd_season = dvd_season

    @property
    def dvd_episode_number(self):
        """
        Gets the dvd_episode_number of this Episode.


        :return: The dvd_episode_number of this Episode.
        :rtype: float
        """
        return self._dvd_episode_number

    @dvd_episode_number.setter
    def dvd_episode_number(self, dvd_episode_number):
        """
        Sets the dvd_episode_number of this Episode.


        :param dvd_episode_number: The dvd_episode_number of this Episode.
        :type: float
        """
        self._dvd_episode_number = dvd_episode_number

    @property
    def dvd_chapter(self):
        """
        Gets the dvd_chapter of this Episode.


        :return: The dvd_chapter of this Episode.
        :rtype: float
        """
        return self._dvd_chapter

    @dvd_chapter.setter
    def dvd_chapter(self, dvd_chapter):
        """
        Sets the dvd_chapter of this Episode.


        :param dvd_chapter: The dvd_chapter of this Episode.
        :type: float
        """
        self._dvd_chapter = dvd_chapter

    @property
    def absolute_number(self):
        """
        Gets the absolute_number of this Episode.


        :return: The absolute_number of this Episode.
        :rtype: int
        """
        return self._absolute_number

    @absolute_number.setter
    def absolute_number(self, absolute_number):
        """
        Sets the absolute_number of this Episode.


        :param absolute_number: The absolute_number of this Episode.
        :type: int
        """
        self._absolute_number = absolute_number

    @property
    def filename(self):
        """
        Gets the filename of this Episode.


        :return: The filename of this Episode.
        :rtype: text_type
        """
        return self._filename

    @filename.setter
    def filename(self, filename):
        """
        Sets the filename of this Episode.


        :param filename: The filename of this Episode.
        :type: text_type
        """
        self._filename = filename

    @property
    def series_id(self):
        """
        Gets the series_id of this Episode.


        :return: The series_id of this Episode.
        :rtype: text_type
        """
        return self._series_id

    @series_id.setter
    def series_id(self, series_id):
        """
        Sets the series_id of this Episode.


        :param series_id: The series_id of this Episode.
        :type: text_type
        """
        self._series_id = series_id

    @property
    def last_updated_by(self):
        """
        Gets the last_updated_by of this Episode.


        :return: The last_updated_by of this Episode.
        :rtype: text_type
        """
        return self._last_updated_by

    @last_updated_by.setter
    def last_updated_by(self, last_updated_by):
        """
        Sets the last_updated_by of this Episode.


        :param last_updated_by: The last_updated_by of this Episode.
        :type: text_type
        """
        self._last_updated_by = last_updated_by

    @property
    def airs_after_season(self):
        """
        Gets the airs_after_season of this Episode.


        :return: The airs_after_season of this Episode.
        :rtype: int
        """
        return self._airs_after_season

    @airs_after_season.setter
    def airs_after_season(self, airs_after_season):
        """
        Sets the airs_after_season of this Episode.


        :param airs_after_season: The airs_after_season of this Episode.
        :type: int
        """
        self._airs_after_season = airs_after_season

    @property
    def airs_before_season(self):
        """
        Gets the airs_before_season of this Episode.


        :return: The airs_before_season of this Episode.
        :rtype: int
        """
        return self._airs_before_season

    @airs_before_season.setter
    def airs_before_season(self, airs_before_season):
        """
        Sets the airs_before_season of this Episode.


        :param airs_before_season: The airs_before_season of this Episode.
        :type: int
        """
        self._airs_before_season = airs_before_season

    @property
    def airs_before_episode(self):
        """
        Gets the airs_before_episode of this Episode.


        :return: The airs_before_episode of this Episode.
        :rtype: int
        """
        return self._airs_before_episode

    @airs_before_episode.setter
    def airs_before_episode(self, airs_before_episode):
        """
        Sets the airs_before_episode of this Episode.


        :param airs_before_episode: The airs_before_episode of this Episode.
        :type: int
        """
        self._airs_before_episode = airs_before_episode

    @property
    def thumb_author(self):
        """
        Gets the thumb_author of this Episode.


        :return: The thumb_author of this Episode.
        :rtype: text_type
        """
        return self._thumb_author

    @thumb_author.setter
    def thumb_author(self, thumb_author):
        """
        Sets the thumb_author of this Episode.


        :param thumb_author: The thumb_author of this Episode.
        :type: text_type
        """
        self._thumb_author = thumb_author

    @property
    def thumb_added(self):
        """
        Gets the thumb_added of this Episode.


        :return: The thumb_added of this Episode.
        :rtype: text_type
        """
        return self._thumb_added

    @thumb_added.setter
    def thumb_added(self, thumb_added):
        """
        Sets the thumb_added of this Episode.


        :param thumb_added: The thumb_added of this Episode.
        :type: text_type
        """
        self._thumb_added = thumb_added

    @property
    def thumb_width(self):
        """
        Gets the thumb_width of this Episode.


        :return: The thumb_width of this Episode.
        :rtype: text_type
        """
        return self._thumb_width

    @thumb_width.setter
    def thumb_width(self, thumb_width):
        """
        Sets the thumb_width of this Episode.


        :param thumb_width: The thumb_width of this Episode.
        :type: text_type
        """
        self._thumb_width = thumb_width

    @property
    def thumb_height(self):
        """
        Gets the thumb_height of this Episode.


        :return: The thumb_height of this Episode.
        :rtype: text_type
        """
        return self._thumb_height

    @thumb_height.setter
    def thumb_height(self, thumb_height):
        """
        Sets the thumb_height of this Episode.


        :param thumb_height: The thumb_height of this Episode.
        :type: text_type
        """
        self._thumb_height = thumb_height

    @property
    def imdb_id(self):
        """
        Gets the imdb_id of this Episode.


        :return: The imdb_id of this Episode.
        :rtype: text_type
        """
        return self._imdb_id

    @imdb_id.setter
    def imdb_id(self, imdb_id):
        """
        Sets the imdb_id of this Episode.


        :param imdb_id: The imdb_id of this Episode.
        :type: text_type
        """
        self._imdb_id = imdb_id

    @property
    def site_rating(self):
        """
        Gets the site_rating of this Episode.


        :return: The site_rating of this Episode.
        :rtype: float
        """
        return self._site_rating

    @site_rating.setter
    def site_rating(self, site_rating):
        """
        Sets the site_rating of this Episode.


        :param site_rating: The site_rating of this Episode.
        :type: float
        """
        self._site_rating = site_rating

    def to_dict(self):
        """
        Returns the model properties as a dict
        """
        result = {}

        for attr, _ in iteritems(self.swagger_types):
            value = getattr(self, attr)
            if isinstance(value, list):
                result[attr] = list(map(
                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
                    value
                ))
            elif hasattr(value, "to_dict"):
                result[attr] = value.to_dict()
            else:
                result[attr] = value

        return result

    def to_str(self):
        """
        Returns the string representation of the model
        """
        return pformat(self.to_dict())

    def __repr__(self):
        """
        For `print` and `pprint`
        """
        return self.to_str()

    def __eq__(self, other):
        """
        Returns true if both objects are equal
        """
        return self.__dict__ == other.__dict__

    def __ne__(self, other):
        """
        Returns true if both objects are not equal
        """
        return not self == other
